import { App } from 'vue';

const modulesFiles = require.context('./', true, /\.ts$/);

// 自动导入directives文件中的所有模块
const aDirectives = modulesFiles
  .keys()// ["./permission.ts"]
  .filter(item => item.indexOf('index') < 0)
  .reduce((previousValue: { [key: string]: any }, currentValue) => {
    const moduleName = currentValue.replace(/^\.\/(.*)\.\w+$/, '$1');// set './app.js' => 'app'
    const value = modulesFiles(currentValue);
    // previousValue[moduleName] = value.default; 【报错： 函数参数赋值】
    return {
      ...previousValue,
      [moduleName]: value.default,
    };
  }, {});

export default {
  install(app: App) {
    Object.keys(aDirectives).forEach(key => {
      app.directive(key, aDirectives[key]);
    });
  },
};
